package com.java123.demo.cal;

public class ShopCart {

	/**
	 * 购物车总价
	 */
	public static double totalPrice = 0;

	public Goods[] gs;

	/**
	 * 当前的购物车下标
	 */
	public static int index = 0;

	public ShopCart(int size) {
		gs = new Goods[size];
	}

	/**
	 * 添加功能
	 */
	public void add(String name, double price, int num) {
		/**
		 * 是否存在相同的商品
		 */
		boolean flag = false;
		// 迭代当前购物车
		for (Goods g : gs) {
			if (g != null) {
				// 如果商品名相同，同一个商品
				if (g.name.equals(name)) {
					g.num += num;
					flag = true;
					break;
				}
			}
		}

		// 购物车不存在当前商品
		if (!flag) {
			// 新建商品
			Goods g = new Goods(name, price);
			g.num = num;
			gs[index] = g;
			index++;
		}
		/**
		 * 修改总价
		 */
		totalPrice += (num * price);
	}

	// 修改
	public void update(String name, int num) {
		// 迭代当前购物车
		for (int i = 0; i < index; i++) {
			Goods g = gs[i];
			if (g != null) {
				// 如果商品名相同，同一个商品
				if (g.name.equals(name)) {
					int orgNum = g.num;
					if (orgNum > num) {
						g.num -= num;
						/**
						 * 修改总价
						 */
						totalPrice -= (num * g.price);
					} else {
						// orgNum <= num
						num = orgNum;
						totalPrice -= (num * g.price);
						gs[i] = null;
					}

					break;
				}
			}
		}
	}

	// 删除商品
	public void delete(String name) {
		// 迭代当前购物车
		for (int i = 0; i < index; i++) {
			Goods g = gs[i];
			if (g != null) {
				if (g.name.equals(name)) {
					totalPrice -= (g.num * g.price);
					gs[i] = null;
				}
			}
		}
	}

	/**
	 * 查看当前购物车信息
	 * 
	 * @return
	 */
	public String showShops() {
		String result = "购买的商品有：\n";
		result = result + "商品名称		单价		数量\n";
		// 遍历购物车
		for (int i = 0; i < index; i++) {
			Goods g = gs[i];
			if (g != null) {
				result = result + g.name + "		" + g.price + "		" + g.num + "\n";
			}
		}
		result = result + "总价：" + totalPrice;
		return result;
	}
}
